// 加载模块
const Nedb = require('nedb')
var path = require('path')
// 实例化连接对象（不带参数默认为内存数据库）
const db = {}
// 初始化表格数据库
db.table = new Nedb({
  filename: path.join(__dirname, '/data/table.db'),
  autoload: true
})
// 初始化电力曲线数据库
db.eqline = new Nedb({
  filename: path.join(__dirname, '/data/eqline.db'),
  autoload: true
})
// 初始化倍率数据库
db.rate = new Nedb({
  filename: path.join(__dirname, '/data/rate.db'),
  autoload: true
})
// 初始化有功功率数据
db.power = new Nedb({
  filename: path.join(__dirname, '/data/power.db'),
  autoload: true
})
// 整理后的负荷曲线数据
db.loadcurve = new Nedb({
  filename: path.join(__dirname, '/data/loadcurve.db'),
  autoload: true
})
export const dbtableAction = {
  findByname (req, callback) {
    var regstr = new RegExp(req.name)
    db.table.find({
      type: req.type,
      typeName: regstr
    }, function (err, res) {
      callback(res)
    })
  },
  findByType (type, callback) {
    db.table.find({
      type: type
    }, function (err, res) {
      callback(res)
    })
  },
  addData (data) {
    db.table.insert(data)
  }
}
// 项目区域数据操作
export const dbeqlineAction = {
  findByname (name, callback) {
    var regstr = new RegExp(name)
    db.eqline.find({
      prjName: regstr
    }, function (err, res) {
      callback(res)
    })
  },
  findPrj (prjName, callback) {
    db.eqline.find({
      prjName: prjName
    }, function (err, res) {
      callback(res)
    })
  },
  findAll (callback) {
    db.eqline.find({ 
    }, { 
      AssetsNum: 1
    }, function (err, docs) {
      if (err) return
      callback(docs)
    })
  },
  findAllprj (callback) {
    db.eqline.find({ 
    }, { 
      prjName: 1,
      _id: 0
    }, function (err, docs) {
      if (err) return
      callback(docs)
    })
  },
  addData (data) {
    db.eqline.insert(data)
  },
  updarate (data) {
    db.eqline.update({ 
      AssetsNum: data.AssetsNum 
    }, { 
      $set: { rate: data.rate }
    }, {
    }, 
    function (err, numReplaced) {
    })
  }
}
// 项目区域对应的有功功率数据库操作
export const dbrateAction = {
  findByname (num, callback) {
    db.rate.findOne({
      AssetsNum: num
    }, function (err, res) {
      if (err) return
      callback(res)
    })
  },
  addData (data) {
    db.rate.count({ AssetsNum: data.AssetsNum }, function (err, count) {
      if (err) return
      if (count === 0) {
        db.rate.insert(data)
      }
    })
  }
}
// 电表实时数据库操作
export const dbPowerAction = {
  findByname (name, callback) {
    db.power.find({
      prjName: name
    }).sort({ date: 1 }).exec(function (err, res) {
      if (err) return
      callback(res)
    })
  },
  addData (data) {
    db.power.insert(data)
  }
}
// 电表负荷曲线数据库操作
export const dbloadcurveAction = {
  addData (data) {
    db.loadcurve.insert(data)
  }
}
